package com.mxl.service.channel;

import com.mxl.dao.channel.model.DealRequest;
import com.mxl.dao.channel.model.DealResponse;

/**
 * 交易请求包装器
 * 
 * @author mxl
 * 
 */
public interface DealRequestWrapper {
	/**
	 * 把传递进来的交易请求dto转换为交易请求
	 * 
	 * @param requestDTO
	 *            交易请求dto
	 * @return request 交易请求
	 */
	public void addRequestParameters(DealRequest request);
	
	/**
	 * 把传递进来的交易请求dto转换为查询请求
	 * 
	 * @param requestDTO
	 *            交易请求dto
	 * @return request 交易请求
	 */
	public void addQueryParameters(DealRequest request);

	/**
	 * 设置返回参数
	 * 
	 * @param chargeResponse
	 * @param chargeResult
	 */
	public void resolveCardResponse(CommChargeResponse chargeResponse,
			byte[] chargeResult);

	/**
	 * 设置响应结果
	 * 
	 * @param chargeResponse
	 * @param request
	 * @return
	 */
	public DealResponse buildDealResponse(CommChargeResponse chargeResponse);

	/**
	 * 设置超时 或者异常
	 * 
	 * @param chargeResponse
	 */
	public void resolverTimeout(CommChargeResponse chargeResponse);
}
